Skip to content

ao

グローバルライブラリは、メッセージの送信、プロセスの生成などに使用されます。

使用例

グローバル ao オブジェクトは、プロセス内のどこからでもアクセス可能です:

lua
-- sends a message to another process ("Transfer" action)
ao.send({
  Target = "usjm4PCxUd5mtaon7zc97-dt-3qf67yPyqgzLnLqk5A",
  Action = "Transfer",
  Recipient = "XjvCPN31XCLPkBo9bUeB7vAK0VC6-eY52-CS-6Iho8F",
  Quantity = tostring(1045)
})

モジュール変数

  • ao.id: {string} プロセスの Arweave ID を保持します。
  • ao.authorities: {table} 任意の信頼できる呼び出し元の配列です。
  • ao._module: {string} 各呼び出し時に実行されるプロセスの WASM ベースモジュールです。
  • ao._ref: {number} 一回の呼び出しインスタンスで送信されたメッセージのカウンターです。
  • ao._version: {string} ao グローバルライブラリのバージョンです。
  • ao.env: {table} 初期化メッセージからのプロセス環境です。

ao.env

ao.env グローバル変数は、プロセスの初期化メッセージに関する情報を保持します。以下のスキーマに従います:

json
{
  "type": "object",
  "properties": {
    "Process": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "example": "A1b2C3d4E5f6G7h8I9j0K1L2M3N4O5P6Q7R8S9T0"
        },
        "Owner": {
          "type": "string",
          "example": "Xy9PqW3vR5sT8uB1nM6dK0gF2hL4jC7iE9rV3wX5"
        },
        "TagArray": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "App-Name"
              },
              "value": {
                "type": "string",
                "example": "aos"
              }
            }
          },
          "example": [{ "name": "App-Name", "value": "aos" }]
        },
        "Tags": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "patternProperties": {
            "": {
              "type": "string"
            }
          },
          "example": {
            "App-Name": "aos"
          }
        }
      }
    }
  }
}

モジュール関数

log()

提供された値/メッセージを Results.Output テーブルに追加します。これは後で aoconnect ライブラリを使用して読み取ることができます。デバッグや呼び出し元への出力値の返却に便利です。

  • パラメータ:
    • txt: {any} 出力テーブルに追加される値/メッセージ
  • 戻り値: {void}

Examples

lua
...
ao.log("Breakpoint reached")
...
ao.log({
  Message = "Transferred " .. quantity .. " tokens to " .. target,
  Quantity = quantity,
  Recipient = target
})

send()

他のプロセスにメッセージを送信し、提供されたメッセージアイテムをプロセスのアウトボックスに挿入します。この際、ao スペックに準拠した メッセージタグも付加されます。

  • パラメータ:
    • msg: {table} 送信されるメッセージ
  • 戻り値: 適用されたタグと DataItem フィールドを持つ送信メッセージアイテム。

注: msg テーブルの各フィールドは DataItem タグとして追加されますが、次のフィールドは例外です: "Target", "Data", "Anchor", "Tags"。これらのフィールドはルートレベルの DataItem フィールドとして解釈されます。

Example

lua
-- sends a message to "XjvCPN31XCLPkBo9bUeB7vAK0VC6-eY52-CS-6Iho8F"
-- with the tag { "name": "Action", "value": "Ping" }
ao.send({
  Target = "XjvCPN31XCLPkBo9bUeB7vAK0VC6-eY52-CS-6Iho8F",
  Action = "Ping"
})

spawn()

別のプロセスから新しいプロセスを生成することを可能にします。

  • パラメータ:
    • module: {string} 新しいプロセスで使用されるモジュールの Arweave トランザクション ID
    • msg: {table} プロセスを初期化するメッセージ。形式は 上記 の説明に従います。
  • 戻り値: 初期化メッセージアイテム

Example

lua
ao.spawn("n0BFH80b73mi9VAWUzyuG9gEC3LI2zU2BFxum0N8A9s", {
  ["Custom-Tag"]: "Custom-Value"
})